use semver::Version;
use serialize::{Encoder,Encodable};
-use core::source::SourceId;
-use core::{
- Dependency,
- PackageId,
- Summary
-};
+use core::{Dependency, PackageId, Summary};
use core::package_id::Metadata;
use core::dependency::SerializedDependency;
use util::{CargoResult, human};
targets: Vec<Target>,
target_dir: Path,
doc_dir: Path,
- sources: Vec<SourceId>,
build: Vec<String>,
warnings: Vec<String>,
exclude: Vec<String>,
impl Manifest {
pub fn new(summary: Summary, targets: Vec<Target>,
- target_dir: Path, doc_dir: Path, sources: Vec<SourceId>,
+ target_dir: Path, doc_dir: Path,
build: Vec<String>, exclude: Vec<String>,
metadata: ManifestMetadata) -> Manifest {
Manifest {
targets: targets,
target_dir: target_dir,
doc_dir: doc_dir,
- sources: sources,
build: build,
warnings: Vec::new(),
exclude: exclude,
&self.doc_dir
}
- /// Returns a list of all the potential `SourceId`s of the dependencies.
- pub fn get_source_ids(&self) -> &[SourceId] {
- self.sources.as_slice()
- }
-
pub fn get_build(&self) -> &[String] {
self.build.as_slice()
}
pub fn get_absolute_target_dir(&self) -> Path {
self.get_root().join(self.get_target_dir())
}
-
- pub fn get_source_ids(&self) -> Vec<SourceId> {
- let mut ret = vec!(self.source_id.clone());
- ret.push_all(self.manifest.get_source_ids());
- ret
- }
}
impl Show for Package {
let lockfile = package.get_manifest_path().dir_path().join("Cargo.lock");
let source_id = package.get_package_id().get_source_id();
let previous_resolve = try!(ops::load_lockfile(&lockfile, source_id));
- match previous_resolve {
+ let sources = match previous_resolve {
Some(ref r) => r.iter().map(|p| p.get_source_id().clone()).collect(),
- None => package.get_source_ids(),
+ None => vec![package.get_package_id().get_source_id().clone()],
};
try!(registry.add_sources(sources));
let mut source = try!(PathSource::for_path(&manifest_path.dir_path()));
try!(source.update());
let package = try!(source.get_root_package());
- let source_ids = package.get_source_ids();
let mut config = try!(Config::new(shell, None, None));
let resolve = {
let mut registry = PackageRegistry::new(&mut config);
- try!(registry.add_sources(source_ids));
try!(resolver::resolve(package.get_summary(),
resolver::ResolveEverything,
&mut registry))
.filter(|s| !to_avoid.contains(s))
.map(|s| s.clone()));
}
- None => sources.extend(package.get_source_ids().into_iter()),
+ None => {}
}
try!(registry.add_sources(sources));
struct Context<'a> {
deps: &'a mut Vec<Dependency>,
source_id: &'a SourceId,
- source_ids: &'a mut Vec<SourceId>,
nested_paths: &'a mut Vec<Path>
}
impl TomlManifest {
pub fn to_manifest(&self, source_id: &SourceId, layout: &Layout)
-> CargoResult<(Manifest, Vec<Path>)> {
- let mut sources = vec!();
let mut nested_paths = vec!();
let project = self.project.as_ref().or_else(|| self.package.as_ref());
let mut cx = Context {
deps: &mut deps,
source_id: source_id,
- source_ids: &mut sources,
nested_paths: &mut nested_paths
};
targets,
layout.root.join("target"),
layout.root.join("doc"),
- sources,
build,
exclude,
metadata);
let loc = try!(git.as_slice().to_url().map_err(|e| {
human(e)
}));
- let source_id = SourceId::new(kind, loc);
- // TODO: Don't do this for path
- cx.source_ids.push(source_id.clone());
- Some(source_id)
+ Some(SourceId::new(kind, loc))
}
None => {
details.path.as_ref().map(|path| {